package com.wjk.kylin.modules.system.menu.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.wjk.kylin.modules.system.vo.RouterVO;
import com.wjk.kylin.modules.system.menu.entity.Menu;
import com.wjk.kylin.modules.system.user.entity.User;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;

import java.util.Collection;
import java.util.List;
import java.util.Set;


/**
 * <p>
 *  角色表 服务类
 * </p>
 *
 * @author wangjkui
 * @since 2020-06-01
 */
public interface IMenuService extends IService<Menu> {

    /**
     * 新增
     * @param menu
     * @return
     */
    boolean save(Menu menu);

    /**
     * 编辑
     * @param menu
     * @return
     */
    boolean update(Menu menu);

    /**
     * 是否有子菜单
     * @param menuId
     * @return
     */
    boolean hasChildByMenuId(String menuId);

    /**
     * 删除
     * @param menuId
     * @return
     */
    boolean deleteById(String menuId);

    /**
     * 根据用户查询权限
     * @param userId
     * @return
     */
    Collection<SimpleGrantedAuthority> findMenuPermsByUser(User userId);

    /**
     * 根据用户权限集合
     * @param user
     * @return
     */
    Set<String> findMenuPermsByUserToUser(User user);

    /**
     * 获取菜单树列表
     * @return
     */
    List<Menu> treeList();

    /**
     * 获取路由信息
     * @param userId
     * @return
     */
    List<RouterVO> getRouters(String userId);
}
